package remoto;

import java.rmi.RemoteException;
import java.util.LinkedList;
import java.util.List;

import model.Unidad;
import hbt.HibernateDao;


public class GestionImpl implements IGestion {
	
	private static GestionImpl instance;
	private static HibernateDao hdao;
	
	private GestionImpl() {}
	
	public static GestionImpl getInstance() {
		if (instance== null) {
			instance = new GestionImpl();
			hdao = new HibernateDao();
		}
		return instance;
	}

	@Override
	public String getUnidadString(int cod) {
		System.out.println("getUnidadString");
		return "lalala";
	}

	private UnidadDTO unidadToDto(Unidad u) {
		UnidadDTO uDTO = new UnidadDTO();
		uDTO.codigo=u.getCodigo();
		uDTO.descripcion=u.getDescripcion();
		return uDTO;
	}

	@Override
	public UnidadDTO getUnidad(int cod) {
		System.out.println("getUnidadString");
		Unidad u = hdao.getUnidadById(cod);
		UnidadDTO uDTO = unidadToDto(u);
		return uDTO;
	}

	@Override
	public void agregarElaborado(ElaboradoDTO e) {
		System.out.println("agregarElaborado");
		
	}

	@Override
	public void agregarSemiElaborado(SemiElaboradoDTO se) {
		System.out.println("agregarSemiElaborado");
		
	}

	@Override
	public List<UnidadDTO> getListaUnidades() throws RemoteException {
		List<UnidadDTO> usDTO = new LinkedList<UnidadDTO>();
		for(Unidad u : hdao.getAllUnidades()) {
			usDTO.add(this.unidadToDto(u));
		}
		
		return usDTO;
	}

	@Override
	public void cargarUnidad(UnidadDTO dto) throws RemoteException {
		Unidad u = new Unidad();
		u.setCodigo(dto.codigo);
		u.setDescripcion(dto.descripcion);
		
		hdao.persistU(u);
	}

}
